===============================================================================
=                        cam_os_wrapper change log                            =
===============================================================================

v1.0.40 - 2021-01-28
  Add
    - Support CamOsGetCpuOnline

v1.0.39 - 2021-01-21
  Change
    - CamOsTcond### is no longer supported

v1.0.38 - 2021-01-21
  Add
    - Support CamOsIrqSetAffinityHint

v1.0.37 - 2020-11-30
  Add
    - Support CamOsCondition### macro for condition wait

v1.0.36 - 2020-07-16
  Changed
    - Define CamOsPhysAddr_t to describe the physical address to be compatible 
      with LPAE mode, include following API change:
        CamOsMemMap
        CamOsMemFromUserModeMap
    - The following APIs are no longer supported
        CamOsPhyMemMap
        CamOsPhyMemUnMap
  Add
    - To be compatible with LPAE mode, add following APIs
        CamOsMemPhysToMiu
        CamOsMemMiuToPhys
        CamOsMemPhysToVirt
        CamOsMemVirtToPhys
      to replace
        CamOsDirectMemPhysToMiu
        CamOsDirectMemMiuToPhys
        CamOsDirectMemPhysToVirt
        CamOsDirectMemVirtToPhys

v1.0.35 - 2020-06-24
  Add
    - Support CamOsMemAllocAtomic / CamOsMemCallocAtomic / CamOsMemReallocAtomic / 
      CamOsMemCacheAllocAtomic for memory allocate without sleep.

v1.0.34 - 2020-06-01
  Add
    - Support immediately workqueue and delay workqueue.

v1.0.33 - 2020-05-25
  Add
    - Add CamOsCallStack to print call stack information.

v1.0.32 - 2020-05-22
  Add
    - Add CamOsMemFromUserModeMap / CamOsMemFromUserModeUnmap for map the 
      physical address passed by user space in kernel space.
    - Add CamOsMemMap / CamOsMemUnmap for normal memory map.

v1.0.31 - 2020-05-22
  Add
    - Support CamOsJiffiesDiff
  Changed
    - Considering performance and compatibility, CamOsGetJiffies, CamOsJiffiesToMs 
      and CamOsMsToJiffies were changed to 32-bit implementation.

v1.0.30 - 2020-05-18
  Add
    - Support CamOsGetJiffies / CamOsGetHz / CamOsJiffiesToMs / CamOsMsToJiffies.

v1.0.29 - 2020-05-14
  Enhanced
    - CamOsThreadCreate support deadline scheduling policy attributes for Linux
      kernel space.

v1.0.28 - 2020-04-09
  Removed
    - Remove CamOsDirectMemFlush and replace it with CamOsMemFlush.

v1.0.27 - 2020-03-23
  Add
    - Support CamOsTimerDeleteSync for SMP Linux.

v1.0.26 - 2020-03-12
  Add
    - Support CamOsMemFlushExt for inner and outer cache flush.
  Changed
    - Refine CamOsMemFlush.

v1.0.25 - 2020-01-10
  Changed
    - Change CamOsMsSleep/CamOsUsSleep implement.
      In Linux, CamOsMsSleep for larger msecs sleep(10ms+),
      adn CamOsUsSleep for ~usecs or small msecs sleep(10us~20ms).

v1.0.24 - 2019-12-27
  Added
    - Support CamOsDramInfo and CamOsChipRevision.

v1.0.23 - 2019-12-11
  Added
    - Support CamOsMemoryBarrier.

v1.0.22 - 2019-12-09
  Added
    - Support CamOsIdrInitEx for create IDR with maximum entry number.

v1.0.21 - 2019-08-09
  Added
    - Support CamOsThreadChangePriority.

v1.0.20 - 2019-08-02
  Changed
    - cam_os_util_list.h enable CAM_OS_HLIST_EMPTY again, it will cause ABICC
      check g++ build fail.

v1.0.19 - 2019-08-01
  Changed
    - Change parameter order of following atomic function for alignment API style
      CamOsAtomicAddReturn
      CamOsAtomicSubReturn
      CamOsAtomicSubAndTest
      CamOsAtomicAddNegative

v1.0.18 - 2019-08-01
  Added
    - CamOsAtomicAndFetch / CamOsAtomicFetchAnd for AND operation.
    - CamOsAtomicNandFetch / CamOsAtomicFetchNand for NAND operation.
    - CamOsAtomicOrFetch / CamOsAtomicFetchOr for OR operation.
    - CamOsAtomicXorFetch / CamOsAtomicFetchXor for XOR operation.

v1.0.17 - 2019-05-16
  Enhanced
    - CamOsGetTimeOfDay and CamOsSetTimeOfDay support nanosecond field in RTK.

v1.0.16 - 2019-05-10
  Fixed
    - cam_os_util_list.h cause ABICC check g++ build fail.

v1.0.15 - 2019-05-06
  Added
    - Add CamOsMemInvalidate for invalidate data in cache.

v1.0.14 - 2019-04-10
  Fixed
    - CamOsSetTimeOfDay, _TestCamOsSystemTime
      Fix coverity issue - "Memory - illegal accesses".

v1.0.13 - 2019-03-05
  Added
    - CamOsIrq###
      Support interrupt handler setup and control.

v1.0.12 - 2019-02-01
  Fixed
    - CamOsMutex_t and other CamOs### strust may cause alignment exception issue
      in Linux.

v1.0.11 - 2019-01-24
  Changed
    - CamOsGetMonotonicTime sourcing from arch in RTK.
    - Update Software Copyright.

v1.0.10 - 2019-01-16
  Added
    - CamOsMiuPipeFlush
      Flush MIU write buffer.
  Changed
    - CamOsSpinLockIrq and CamOsSpinUnlockIrq are no longer supported.

v1.0.9 - 2018-12-27
  Added
    - CamOsPrintString
      Writes the C string pointed without format to the standard output.
  Fixed
    - CamOsPrintf
      Fix system crash if print more than 256 characters in RTK.

v1.0.8 - 2018-12-20
  Added
    - In kernel space, redirect atoi and qsort to linux kernel's implement.
  Fixed
    - In RTK and user space, CamOsAtomicIncReturn AND CamOsAtomicDecReturn will
      return the value that before add or sub.

v1.0.7 - 2018-12-11
  Added
    - CamOsMsDelay / CamOsUsDelay
    - CamOsSpin###
      Support spinlock synchronization.
  Fixed
    - Replace __always_inline with FORCE_INLINE to avoid warnings in RTK.

v1.0.6 - 2018-09-13
  Added
    - CamOsHexdump
      Print memory data in hex format.
    - CamOsUsSleep
      Suspend execution for microsecond intervals.
    - CamOsTimeDiff
      Returns the difference between two CamOsTimespec_t.
    - CamOsMemFlush
      Clean and invalidate cache.
    - CamOsAtomicCompareAndSwap
      An atomic instruction used in multithreading to achieve synchronization.
      It compares the contents of a memory location with a given value and, only
      if they are the same, modifies the contents of that memory location to a
      new given value.
  Changed
    - CamOsThreadAttrb_t
      Add szName field and support set name while thread created.
    - CamOsTsemDownInterruptible
      Change prototype define, it will return CamOsRet_e now.
    - CamOsTcondWaitInterruptible
      Change prototype define, it will return CamOsRet_e now.

v1.0.5 - 2017-12-18
  Added
    - CAM_OS_MAX_INT
    - Makefile_Linux_user
      Add Makefile for shared library build(make -f Makefile_Linux_user).
  Changed
    - CamOsTsemInit
      In RTK, use MsCreateDynSemExtend to set nVal to current value, and set
      init value to (CAM_OS_MAX_INT - 1). Because MsCreateDynSem sets nVal to
      current value and init value and current value is larger than init value
      will trigger exception.
    - CAM_OS_MAX_TIMEOUT
      Use u32 max value as CAM_OS_MAX_TIMEOUT

v1.0.4 - 2017-12-06
  Changed
    - Move offsetof definition to cam_os_util.h and add definition without
      size_t to avoid compile error if stddef.h not be included.
  Fixed
    - In RTK, if timer has stopped, CamOsTimerModify start a new timer and
      don't release the old timer.

v1.0.3 - 2017-11-30
  Changed
    - Integrate all header files into cam_os_wrapper.h. All functions could be
      used just include cam_os_wrapper.h.
    - CamOsTcond###
      Replace wait queue with completion for Linux kernel to simplify control
      flow.

v1.0.2 - 2017-11-24
  Added
    - CAM_OS_LIST_LAST_ENTRY
      Support "list last entry" in cam_os_util_list.h
    - NO_MDRV_MSYS
      Support disable relative functions for msys
      (add -DNO_MDRV_MSYS in Makefile)
  Changed
    - CamOsMemAlloc / CamOsMemCalloc
      Use kzalloc when requested size <= 2KB(half of page size), and use vzalloc
      when requested size > 2KB to improve memory usage
  Fixed
    - CamOsThreadSchedule / CamOsThreadWakeUp
      Fix schedule and wakeup function in RTK
    - CamOsRwsem###
      Fix read write semaphore function in RTK
    - CamOsTimer###
      Fix timer function in RTK

v1.0.1 - 2017-11-20
  Added
    - CamOsTsemDownInterruptible
      Add prototype define in cam_os_wrapper.h
    - CamOsListSort
      Add symbol to cam_os_export.c
  Changed
    - Support CamOsPhyMemMap/CamOsPhyMemUnMap in Linux user space
    - Mutex can be used without initialization. It will be inited automatically.
    - Support CamOsThreadStop/CamOsThreadShouldStop in RTK
    - uint8_t/int8_t/uint16_t/int16_t/uint32_t/int32_t/uint64_t
      /int64_t. Use u8/s8/u16/s16/u32/s32/u64/s64 to keep portability
    - Remove bool(replace with u8) to keep portability

v1.0.0 - 2017-11-03
  Added
    - CamOsThreadSchedule/CamOsThreadWakeUp
      Control thread to idle and wake up.
    - CamOsMutexTryLock
      Try lock the mutex, and return as non-blocking mode.
    - CamOsRwsem###
      Support read-write semaphore operation.
    - CamOsPhyMemMap/CamOsPhyMemUnMap
      Map and unmap physical memory to virtual address.
    - CamOsMemCache###
      Create a memory cache(memory pool) and allocate with specified size to
      ignore internal fragmentation.
    - CamOsTimer###
      Support timer operation.
    - CamOsIdr###
      Support data record with IDR data structure. In Linux user space and RTK,
      it is implemented with informal IDR(bitmap and array).
    - CamOsInInterrupt
      Check if current function runs in ISR.
    - CamOsSmpMemoryBarrier
      Symmetric multiprocessing memory barrier.
    - CamOsStrError
      Return string describing error number.
    - CamOsPanic
      Put system into panic.
    - CamOsStrtol/CamOsStrtoul/CamOsStrtoull
      Convert C string to long, unsigned long, unsigned long long.
    - cam_os_util_bug.h
      Support error handle function: CAM_OS_BUG, CAM_OS_BUG_ON,
      CAM_OS_IS_ERR_VALUE, ...
    - cam_os_util_ioctl.h
      Support ioctl number function: CAM_OS_IO, CAM_OS_IOW, ...
  Changed
    - Replace u8/s8/u16/s16/u32/s32/u64/s64 with uint8_t/int8_t/uint16_t/int16_t
      uint32_t/int32_t/uint64_t/int64_t.
    - CamOsThreadSetName/CamOsThreadGetName
      Only support to access name by thread self in uclibc.

v0.1.2 - 2017-10-27
  Added
    - CamOsTcond###
      Condition wait functions, please reference to cam_os_wrapper.h.
    - CAM_OS_HASH_###
      Hash table operation functions, please reference to cam_os_hash.h.
    - CAM_OS_BITMAP_###
      Bitmap opration functions, please reference to cam_os_bitmap.h.
    - CAM_OS_LIKELY, CAM_OS_UNLIKELY, and CAM_OS_ARRAY_SIZE
  Changed
    - Use native semaphore of operation system. Original functions comprise
      one mutex and one counter(CamOsTsem###).
    - Supplement list operation functions, please reference cam_os_list.h.
  Removed
    - Remove CamOsTsemGetValue and CamOsTsemReset because this two APIs do not
      fit general semaphore usage.

v0.1.1 - 2017-10-23
  Added
    - CamOsSnprintf
